package com.cn.wanxi.service.impl;

import com.cn.wanxi.dao.UserDao;
import com.cn.wanxi.dao.impl.UserImpl;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.IUserService;

import java.util.List;

/**
 * 1.判断当前用户名是否存在
 * if(true){
 * 返回一个信息，告诉页面当前用户已经存在，注册失败
 * }else{
 * 保存到数据库，返回信息，注册成功
 * }
 * 2.调用数据实现层（dao）
 */
public class UserServiceImpl implements IUserService {
    @Override
    public int add(UserModel userModel) {
//        1.判断当前用户名是否存在
        if (findByUsername(userModel.getUsername())) {
//            返回一个信息，告诉页面当前用户已经存在，注册失败
            return 2;
        } else {
            //    2.调用数据实现层（dao）
//            保存到数据库，返回信息，注册成功
            UserDao userDao = new UserImpl();
            return userDao.add(userModel);//这里调用的是数据实现层，返回的值表示影响数据库数据的条数
        }

    }

    @Override
    public int login(UserModel userModel) {
        /**
         * 服务逻辑层:
         * 1.比较验证码，只有验证码正确才能进入下一步  返回-1验证码不正确
         * 2.更具用户名和密码查询数据是否有值
         *  如果有则返回：1
         *  如果没有值0
         */
        if (!userModel.getCode().equals(userModel.getSessionCode())) {
            return -1;
        } else {
            UserDao userDao = new UserImpl();
            return userDao.findByUsernameAndPassword(userModel);
        }
    }

    @Override
    public List<UserModel> findAll(UserModel userModel) {
        UserDao userDao = new UserImpl();
        return userDao.findAll(userModel);
    }

    @Override
    public int del(int id) {
        UserDao userDao = new UserImpl();
        return userDao.del(id);
    }

    @Override
    public UserModel findById(int id) {
        UserDao userDao = new UserImpl();
        return userDao.findById(id);
    }

    @Override
    public int update(UserModel userModel) {
        UserDao userDao = new UserImpl();
        return userDao.update(userModel);
    }


    /**
     * 通过用户名取数据库查询，如果数据库里面有当前用户，则返回true，否则返回false
     *
     * @param username
     * @return
     */
    private boolean findByUsername(String username) {
        UserDao userDao = new UserImpl();
        return userDao.findByUsername(username);
    }
}
